home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / prog / svgacc20.arj / SVGACC.H < prev    next >
C/C++ Source or Header  |  1994-03-11  |  10KB  |  276 lines

  1. /* SVGACC Include File for MS C/C++/QuickC and Borland C/C++
  2.  * Copyright 1994 by Stephen L. Balkum and Daniel A. Sill
  3.  * Zephyr Software P.O. Box 7704, Austin, Texas  78713-7704
  4.  */
  5.  
  6. #ifndef SVGACC_H
  7. #define SVGACC_H
  8.  
  9. typedef unsigned char byte;
  10.  
  11. typedef struct {
  12.     char r;
  13.     char g;
  14.     char b;
  15. } RGB;
  16.  
  17. typedef RGB PaletteData[256];
  18.  
  19. typedef struct {
  20.     byte hotspotx;
  21.     byte hotspoty;
  22.     byte data[384];
  23. } MouseCursor;
  24.  
  25. typedef struct {
  26.     byte width;
  27.     byte height;
  28.     byte data[4096];
  29. } Font;
  30.  
  31. typedef enum {
  32.     NO_ACTION = 0,
  33.     SET,
  34.     XOR,
  35.     OR,
  36.     AND
  37. } PixelMode;
  38.  
  39. typedef enum {
  40.     UNKNOWN = 0,
  41.     ACUMOS,
  42.     ATI,
  43.     AHEADA,
  44.     AHEADB,
  45.     CHIPSTECH,
  46.     CIRRUS,
  47.     EVEREX,
  48.     GENOA,
  49.     NCR,
  50.     OAKTECH,
  51.     PARADISE,
  52.     REALTEK,
  53.     TRIDENT,
  54.     TSENG3,
  55.     TSENG4,
  56.     VESA,
  57.     VIDEO7,
  58.     AVANCE,
  59.     MXIC,
  60.     PRIMUS
  61. } VGAChipset;
  62.  
  63. typedef struct {
  64.     unsigned int width;
  65.     unsigned int height;
  66.     byte data[1];
  67. } RasterBlock;
  68.  
  69. typedef struct {
  70.     int x;
  71.     int y;
  72. } D2Point;
  73.  
  74. typedef struct {
  75.     int x;
  76.     int y;
  77.     int z;
  78. } D3Point;
  79.  
  80. typedef struct {
  81.     int eyex;
  82.     int eyey;
  83.     int eyez;
  84.     int scrd;
  85.     int theta;
  86.     int phi;
  87. } ProjParameters;
  88.  
  89. #ifdef __cplusplus
  90. extern "C" {
  91. #endif
  92.  
  93. /* Global variables */
  94. extern const int far maxx;
  95. extern const int far maxy;
  96. extern const int far viewx1;
  97. extern const int far viewy1;
  98. extern const int far viewx2;
  99. extern const int far viewy2;
  100.  
  101. /* 'BLocK' methods to manipulate RasterBlocks on and off the screen */
  102.  
  103. extern int  far blkget (int x1, int y1, int x2, int y2, RasterBlock far *gfxblk);
  104. extern void far blkput (PixelMode mode, int x, int y, RasterBlock far *gfxblk);
  105. extern void far blkresize (unsigned newxsize, unsigned newysize, RasterBlock far *sourcegfxblk, RasterBlock far *destgfxblk);
  106. extern int  far blkrotate (int ang, int backfill, RasterBlock far *sourcegfxblk, RasterBlock far *destgfxblk);
  107. extern int  far blkrotatesize (int ang, RasterBlock far *sourcegfxblk);
  108.  
  109. /* 'BYTECOPY' method for fast memory copy */
  110.  
  111. extern void far bytecopy (void far *src, void far *dst, unsigned long numbytes);
  112.  
  113. /* '2D' methods to transform D2Points */
  114.  
  115. extern void far d2rotate (int points, int xorigin, int yorigin, int ang, D2Point far *inary, D2Point far *outary);
  116. extern void far d2scale (int points, int xscale, int yscale, D2Point far *inary, D2Point far *outary);
  117. extern void far d2translate (int points, int xtrans, int ytrans, D2Point far *inary, D2Point far *outary);
  118.  
  119. /* '3D' methods to transform D3Points */
  120.  
  121. extern int  far d3project (int points, ProjParameters far *params, D3Point far *inary, D2Point far *outary);
  122. extern void far d3rotate (int points, int xorigin, int yorigin, int zorigin, int zrang, int yrang, int xrang, D3Point far *inary, D3Point far *outary);
  123. extern void far d3scale (int points, int xscale, int yscale, int zscale, D3Point far *inary, D3Point far *outary);
  124. extern void far d3translate (int points, int xtrans, int ytrans, int ztrans, D3Point far *inary, D3Point far *outary);
  125.  
  126. /* 'DRaW' methods for placing text and graphics primitives on screen */
  127.  
  128. extern void far drwbox (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
  129. extern void far drwcircle (PixelMode mode, int colr, int centerx, int centery, int radius);
  130. extern void far drwellipse (PixelMode mode, int colr, int centerx, int centery, int radiusx, int radiusy);
  131. extern void far drwfillbox (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
  132. extern void far drwfillcircle (PixelMode mode, int colr, int centerx, int centery, int radius);
  133. extern void far drwfillellipse (PixelMode mode, int colr, int centerx, int centery, int radiusx, int radiusy);
  134. extern void far drwline (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
  135. extern void far drwpoint (PixelMode mode, int colr, int x, int y);
  136. extern void far drwstring (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  137. extern void far drwstringdn (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  138. extern void far drwstringlt (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  139. extern void far drwstringrt (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
  140.  
  141. /* 'FILL' methods for filling various regions on screen with a color */
  142.  
  143. extern void far fillarea (int xseed, int yseed, int bordercolr, int fillcolr);
  144. extern void far fillcolor (int xseed, int yseed, int oldcolr, int newcolr);
  145. extern void far fillpage (int colr);
  146. extern void far fillscreen (int colr);
  147. extern void far fillview (int colr);
  148.  
  149. /* 'FONT' methods for setting the current font */
  150.  
  151. extern void far fontgetinfo (int far *wdth, int far *hght);
  152. extern void far fontset (Font far *font);
  153. extern void far fontsystem (void);
  154.  
  155. /* 'GET' methods to return information held by library */
  156.  
  157. extern void far getlaststring (RasterBlock far *strnggfxblk);
  158. extern long far getarccos (long cosvalue);
  159. extern long far getarcsin (long sinvalue);
  160. extern long far getarctan (long tanvalue);
  161. extern long far getcos (long angle);
  162. extern int  far getpoint (int x, int y);
  163. extern long far getsin (long angle);
  164. extern long far gettan (long angle);
  165.  
  166. /* 'GIF' methods to read / write GIF files and place images on screen */
  167.  
  168. extern int  far gifgetinfo (const char far *name, int far *gifxsize, int far *gifysize, int far *numcolors, RGB far *pal);
  169. extern int  far gifmake (int x1, int y1, int x2, int y2, const char far *name);
  170. extern int  far gifput (PixelMode mode, int xloc, int yloc, const char far *name);
  171.  
  172. /* 'JOYSTICK' method to read joysticks' status */
  173.  
  174. extern void far joystickinfo (int far *jax, int far *jay, int far *jabuts, int far *jbx, int far *jby, int far *jbbuts);
  175.  
  176. /* 'MOUSE' methods to interact with mouse driver */
  177.  
  178. extern void far mousebutpress (int reqbut, int far *xloc, int far *yloc, int far *num, int far *mbuts);
  179. extern void far mousebutrelease (int reqbut, int far *xloc, int far *yloc, int far *num, int far *mbuts);
  180. extern void far mousecursordefault (void);
  181. extern void far mousecursorset (MouseCursor far *mousecursor);
  182. extern void far mouseenter (void);
  183. extern void far mouseexit (void);
  184. extern void far mousehide (void);
  185. extern void far mouseinfo (int far *drvmajorver, int far *drvminorver, int far *mousetype, int far *irqnumber);
  186. extern void far mouselocset (int xloc, int yloc);
  187. extern void far mouserangeset (int x1, int y1, int x2, int y2);
  188. extern void far mouserestorestate (byte far *mousebuf);
  189. extern void far mousesavestate (byte far *mousebuf);
  190. extern void far mousesensset (int xsens, int ysens, int dblspdthresh);
  191. extern void far mouseshow (void);
  192. extern void far mousestatus (int far *x, int far *y, int far *mbuts);
  193. extern int  far mousestoragesize (void);
  194.  
  195. extern void far overscanset (int colr);
  196.  
  197. /* 'PAGE' methods to control paging abilities */
  198.  
  199. extern int  far pageactive (int page);
  200. extern int  far pagedisplay (int x, int y, int page);
  201.  
  202. /* 'PALette' methods to manipulate and activate palettes */
  203.  
  204. extern void far palchgauto (RGB far *pal, RGB far *newpal, int firstcolr, int lastcolr, int speed);
  205. extern void far palchgstep (RGB far *pal, RGB far *newpal, int firstcolr, int lastcolr, int percent);
  206. extern void far palcopy (RGB far *srcpal, RGB far *destpal, int firstcolr, int lastcolr);
  207. extern void far paldimstep (RGB far *pal, int firstcolr, int lastcolr, int percent);
  208. extern void far palget (RGB far *pal, int firstcolr, int lastcolr);
  209. extern void far palioauto (RGB far *pal, int firstcolr, int lastcolr, int speed);
  210. extern void far palrotate (RGB far *pal, int firstcolr, int lastcolr, int shift);
  211. extern void far palset (RGB far *pal, int firstcolr, int lastcolr);
  212.  
  213. /* 'RESolution' methods to set various video modes */
  214.  
  215. extern int  far res320 (void);
  216. extern int  far res640 (void);
  217. extern int  far res640l (void);
  218. extern int  far res800 (void);
  219. extern int  far res1024 (void);
  220. extern int  far restext (void);
  221.  
  222. /* 'SCROLL' methods for scrolling various sections of the screen */
  223.  
  224. extern void far scrolldn (int x1, int y1, int x2, int y2, int num, int colr);
  225. extern void far scrolllt (int x1, int y1, int x2, int y2, int num, int colr);
  226. extern void far scrollrt (int x1, int y1, int x2, int y2, int num, int colr);
  227. extern void far scrollup (int x1, int y1, int x2, int y2, int num, int colr);
  228.  
  229. /* 'Sync' DELAY method */
  230.  
  231. extern void far sdelay (int count);
  232.  
  233. /* 'SET' methods to adjust library internal variables */
  234.  
  235. extern void far setcard (VGAChipset chip, int mem);
  236. extern void far setview (int x1, int y1, int x2, int y2);
  237.  
  238. /* 'SPRITE' methods for manipulating sprites on and off screen */
  239.  
  240. extern int  far spritecolldetect (int transcolr, int x1, int y1, int x2, int y2, RasterBlock far *sprite1, RasterBlock far *sprite2);
  241. extern void far spritegap (int transcolr, int x, int y, RasterBlock far *sprite, RasterBlock far *spritebkgnd);
  242. extern void far spriteget (int transcolr, int x, int y, RasterBlock far *sprite, RasterBlock far *spritebkgnd);
  243. extern void far spriteput (PixelMode mode, int transcolr, int x, int y, RasterBlock far *sprite);
  244.  
  245. /* 'VIDEO' methods to interact with video mode and display */
  246.  
  247. extern int  far videomodeget (void);
  248. extern void far videomodeset (int videomode);
  249. extern void far videooff (void);
  250. extern void far videoon (void);
  251.  
  252. /* 'Identification' methods to discover WHICH hardware is available */
  253.  
  254. extern int  far whichcpu (void);
  255. extern int  far whichjoystick (void);
  256. extern int  far whichmem (void);
  257. extern int  far whichmouse (void);
  258. extern VGAChipset far whichvga (void);
  259. extern int  far whichxms (unsigned int far *xmskbytesavail, unsigned int far *xmshandlesavail);
  260.  
  261. /* 'XMS' methods to store and retrieve extended memory */
  262.  
  263. extern int  far xmsallocate (unsigned int reqkbytes);
  264. extern int  far xmscopy (int xmssrchandle, long srcoffset, int xmsdesthandle, long destoffset, unsigned long count);
  265. extern int  far xmserror (void);
  266. extern int  far xmsfree (int xmshandle);
  267. extern int  far xmsget (int xmshandle, long offset, void far *destmem, unsigned long count);
  268. extern int  far xmsput (void far *sourcemem, int xmshandle, long offset, unsigned long count);
  269.  
  270. #ifdef __cplusplus
  271. }
  272. #endif
  273.  
  274. #endif
  275. /* SVGACC_H */
  276.